第 四 章  
图 像 预 处 理  
汇报人:陈西PPT工作室  
目录  
感兴趣区域(ROI)  
像的变换与校正  
像增强  
结  
感兴趣区域(ROI)  
ROI  
感兴趣区域,ROI。在Halcon中,ROI是常用的一个算子,  
ROI就是从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾  
勒出需要处理的区域,这个区域是你的图像分析所关注的重点。使用  
ROI可以减少计算量,加快图像处理速度,提高效率。  
选择ROI的步骤  
步骤一:选择关注区域  
在采集到原始图像后,即可通过图像处理得出特定区域,常规的有矩形、圆形以及椭  
圆。此时,选择的区域还不能称为ROI, 它还只是形状或者说是像素范围。  
步骤二:裁剪区域  
如果要将这选择的区域变成独立的图像,还需要将其从原图上裁剪出来。在Halcon中可以  
通过reduce_domain算子将其截取出来成为单独的一幅图片。  
创建RIO实例  
*
关闭窗口ꢀ  
Row := 134  
dev_close_window ( )  
Column := 118  
*
读取图像ꢀ  
read_image (Clip, 'clip')  
把一个图像缩放到指定比例大小ꢀ  
*选择ROIgen_rectangle2 (Rectangle, Row, Column,phi,  
19, 55)  
*
*从原图中分割出ROIreduce_domain (ImageZoomed,  
zoom_image_factor (Clip, ImageZoomed, 0.5,0.5, 'constant') Rectangle, ImageReduced)  
*
获得图像尺寸ꢀ  
get_image_size (ImageZoomed, Width, Height)  
新建显示窗口,适应图像尺寸ꢀ  
*显示分割后的ROI图像ꢀdev_display (ImageReduced)  
程序执行结果如图所示:  
*
dev_open_window (0, 0, Width, Height, 'black', WindowID)  
dev_display (ImageZoomed)  
*
输入矩形长轴针对水平方向的角度  
phi := 1.91  
输入矩形中心点的y值坐标、x值坐标ꢀ  
*
a)  
(b)  
像的变换与校正  
ꢀꢀꢀꢀꢀꢀꢀ  
图像的变换与校正  
由于多种因素的影响,应用中实际获得的画面可能会与想象中有  
所差异,因此需要进行调整、把画面复原。图像的变换与校正是指用  
数学建模方法来描述图像位置、大小、形状等已知条件,利用这些条  
件进行确定模型参数,根据模型对图像进行几何校正。  
图像的平移、旋转和缩放  
图像的平移  
ꢀ图像的平移变换就是将图像中的所有像素点按照要求的偏移量进行垂直、水平移动。 平移变换  
只是改变了原有目标在画面上的位置,而图像的内容则不发生变化。  
ꢀ将一个点移动ꢀꢀꢀ个向量,相当于在ꢀ坐标的左边乘以一个平移矩阵T。设平移后的点为ꢀ ,  
p
t
x ,y)  
p
0
t
t
如下面公式所示:  
1 0 x   
t
p  T  p  0 1 y  p  
t
0
t
0
0 0 1   
图像的平移、旋转和缩放  
2、图像的旋转  
图像的旋转是指以图像中的某一点为原点以逆时针或顺时针方向旋转一定的角度,通常是以图  
像的中心为原点,将图像上的所有像素都旋转一个相同的角度。旋转后,图像的大小一般会改变。  
p
如果将一个一个点在二维平面上绕坐标原点旋转角度ꢀ,相当于在坐标ꢀ的左边乘以一个旋转矩  
0
p
阵R。设旋转后的点为ꢀ ,如下面公式所示:  
r
cos sin0  
p  R p  sin cos 0  p  
r
0
0
0
0
1  
图像的平移、旋转和缩放  
、图像的缩放  
ꢀ假设一个点在二维平面上,沿x轴方向放大ꢀ倍,沿y轴方向放大ꢀ 倍,那么变化后该点的坐标  
S
S
x
y
p
s
记为ꢀ ,如下面公式所示:  
S 0 0  
x
p  S  p  0 S 0  p  
s
0
y
0
0 0 1  
在Halcon中用hom_mat2d_scale算子表示旋转。  
hom_mat2d_scale(: : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)  
图像的仿射变换  
图像的仿射变换实例  
*
关闭窗口,读取图像 ꢀꢀ  
dev_close_window ( )read_image (Image, 'D:triangle.png')  
获得图像尺寸,打开窗口,读取图片ꢀꢀ  
*定义仿射变换矩阵ꢀꢀ  
hom_mat2d_identity (HomMat2DIdentity)  
*设置平移矩阵至中心点坐标ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
hom_mat2d_translate (HomMat2DIdentity,-Row1 ,  
-Column1, HomMat2DTranslate)  
*
get_image_size (Image, Width1, Height1)  
dev_open_window (0, 0, Width1, Height1, 'black', WindowID)  
dev_display (Image)  
hom_mat2d_translate (HomMat2DTranslate,  
Height1/2, Width1/2, HomMat2DTranslate1)  
*通过仿射变换将三角形移至中心点位置并显示  
图像  
*
转灰度图像ꢀꢀ  
rgb1_to_gray (Image, GrayImage)  
图像二值化ꢀꢀ  
threshold (GrayImage, Regions, 0, 212)  
获取图像面积,中心点坐标ꢀꢀ  
area_center (Regions, Area1, Row1, Column1)  
*
affine_trans_image (GrayImage, ImageAffinTrans,  
HomMat2DTranslate1, 'constant', 'false')  
dev_display (ImageAffinTrans)  
*
ꢀꢀꢀꢀꢀ  
图像的仿射变换实例  
*设置旋转矩,3.14/2表示旋转角度,正值代表逆时针旋转, *通过仿射变换将三角形放大1.5倍并显示  
Height1/2,Width1/2)为基准点ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀa f fi n e _t r a n s _ im ag e (ImageAffinTrans1,  
hom_mat2d_rotate (HomMat2DIdentity,3.14/2,  
Height1/2,Width1/2, HomMat2DRotate)  
ImageAffinTrans2, HomMat2DScale, 'constant',  
'false')  
*通过仿射变换将三角形旋转90°并显示图片ꢀꢀ  
dev_display (ImageAffinTrans2)  
affine_trans_image (ImageAffinTrans, ImageAffinTrans1,  
HomMat2DRotate, 'constant', 'false')  
dev_display (ImageAffinTrans1)  
*设置缩放矩阵,缩放倍数为1.5倍  
hom_mat2d_scale (HomMat2DIdentity, 1.5,1.5,Height1/2,  
Width1/2, HomMat2DScale)  
a)  
(b)  
c)  
(d)  
图像的投影变换  
投影变换可以用 hom_vector_to_proj_hom_mat2d算子进行。  
hom_vector_to_proj_hom_mat2d( : : Px, Py, Pw, Qx, Qy, Qw, Method : HomMat2D)  
图像的投影变换实例  
*
更新、关闭窗口  
dev_update_off ( )  
dev_close_window ( )  
*
定义坐标变量  
XCoordCorners : = [130, 225, 290, 63]  
YCoordCorners : = [101, 96, 289, 269]  
*获得图像、打开适合图片的窗口  
*为每个输入点生成十字形状的XLD轮廓,6代表组  
read_image (Image_slanted.  
datacode/ecc200/ecc200_to_preprocess_001')  
dev_open_window_fit_image (Image_slanted,0,0 ,-1 , -  
成十字横线的长度,0.78代表角度  
gen_cross_contour_xld (Crosses, XCoordCorners,  
YCoordCorners, 6, 0. 78)  
1, Window Handle)  
*设置  
dev_display (Image_slanted)  
dev_display (Crosses)  
设置输出颜色'白色'  
dev_set_color ('white')  
定义输出线宽3  
dev_set_line_width (3)  
stop ( )  
stop ( )  
*生成投影变换需要的变换矩阵,这里是齐次变换  
矩阵  
图像的投影变换实例  
hom_vector_to _proj_hom_mat2d (XCoordCorners,  
YCoordCorners, [1, 1, 1. 1], [70, 270, 270, 70], [100,  
数据,SymbolXLDs是成功解码后的符号生成的  
XLD轮廓  
1
00, 300, 300], [1, 1, 1, 1], ' normalized_dlt',  
HomMat2D)  
在待处理的图像上应用投影变换矩阵,并将结果  
find_data_code_2d (Image_rectified, SymbolXLDs,  
DataCodeHandle, [ ],[ ],ResultHandles,  
DecodedDataStrings)  
*
输出到Image_rectified中  
*显示  
projective_trans_image(Image_slanted,lmage_rectified,  
HomMat2D, 'bilinear','false', 'false')  
dev_display (Image_slanted)  
dev_display (Image_rectified)  
dev display (SymbolXLDs)  
*为上述2D数据代码创建模型DataCodeHandle为  
数据代码模型  
*在图形窗口编辑并显示文本  
disp_message (WindowHandle, 'Decoding successful' ,  
'window' , 12, 12, 'black' , 'true' )  
*设置当前窗口的字体属性  
create_data_code_2d_model ('Data Matrix ECC 200’,  
[
],[ ],DataCodeHandle)  
*检测输入图像中2D数据模型代码,并读取编码  
图像的投影变换实例  
程序执行结果如图所示:  
set_display_font (WindowHandle, 12, 'mono', 'true' ,  
'
false' )  
在图形窗口编辑并显示文本  
disp_message (WindowHandle, DecodedDataStrings,  
window', 350, 70, 'forest green' , 'true')  
创建二维码模型  
clear_data_code_2d_model (DataCodeHandle)  
*
'
*
a)  
(b)  
图ꢀ像ꢀ增ꢀ强  
图像增强  
图像增强是有目的地强调图像的整体或局部特性,将原来不清晰  
的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征  
之间的差别,抑制不感兴趣的特征,改善图像质量、丰富信息量,加  
强图像判读和识别效果,满足某些特殊分析的需要。  
图像增强的基本分类  
l 像增强技术基本可以分为两大类,一类是  
空间域处理法,一类是频域处理法。  
l 空间域处理法是指在空间域中,直接对图  
像的像素灰度值进行增强处理。  
l 频域处理法的基础是卷积定理,它采用修  
改图像傅立叶变换的方法实现对信号的增  
强。常用的方法包括低通滤波、髙通滤波  
以及同态滤波等。  
l 图像增强所包含的主要内容右图所示  
图像增强的点运算  
在图像处理中,点运算是图像数字化软件和图像显示软件的重要组成部分。对于一  
幅输入图像,经过点运算将产生一幅每个像素的灰度值仅取决于输入图像中相对应像素  
灰度值的输出图像。  
灰度变换  
灰度变换(有时又被称为图像的对比度增强或对比度拉伸),是指根据某种目标条  
件按一定变换关系逐点改变源图像中每一个像素灰度值的方法。调整图像灰度值的其中  
一个原因是由于图像的对比度太弱,灰度变换可使图像动态范围增大,对比度得到扩展,  
显示效果更加清晰。  
灰度变换是图像增强处理技术中的一种非常基础、直接的空间域图像处理方法。  
常用的方法有三种:线性灰度变分段线性灰度变换非线性灰度变。  
线
假定原图像  
的灰度范围为[a,b],线性变换  
f (x,y)  
后的图像 g (x , y )的灰度范围扩展至[c,d],如右图所示。  
线性灰度变换  
f (x,y) g(x,y)  
则ꢀꢀꢀ 与ꢀꢀꢀ 关系表达式为:  
g(x,y)k [f (x,y)a]c  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
当k>1时,则会使图像对比度变大,灰度取值的动态范围展宽;  
当k=1时,则灰度取值区间会随着a和c的大小上下平移,但灰度动态范围不变;  
当0<k<1时,则变换后会使图像对比度变小,灰度取值的动态范围会变窄;  
当k<0,则变换后图像的灰度值会发生反转,即图像中亮的变暗,暗的变亮。  
线
将图像灰度区间分成两段乃至多段分别作线性变换。  
常用的三段线性变换如右图所示。其数学表达式如下:  
c
f (x,y)  
0  f (x,y) a  
a
d c  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
g(x,y)  
[f (x,y)a]c  
a  f (x,y) b  
b a  
M  d  
g
[
f (x,y)b]d  
b  f (x,y) M f  
M b  
f
通过调整折线拐点的位置及控制分段直线的斜率,即  
可对任一灰度区间进行扩展或压缩。ꢀ  
段线性灰度变换  
单纯的线性变换对图像细节的增强较为有限,如果只想仔细地分  
析图像的某一部分,也就是对图像的那部分增强,我们可以结合非线  
性变换技术来进行解决,可以使得压缩像素少的部分,扩展像素数集  
中的部分。  
典型的非线性变换函数有指数函数、对数函数、阈值函数、多值  
量化函数等。  
在Halcon中的灰度变换算子  
对图像进行线性灰度变换实例  
程序如下:  
程序执行结果如图所示:  
*
*
*
*
关闭窗口ꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
获取图像ꢀꢀꢀꢀꢀꢀꢀread_image (Image1, 'C:/Users/92011/Pictures/1.jpg')  
获取图像尺寸ꢀꢀꢀꢀꢀget_image_size (Image1, Width, Height)  
打开大小适应的窗口ꢀꢀdev_open_window (0, 0, Width, Height, 'black',  
WindowHandle)  
*
*
*
*
1
*
*
显示图像ꢀꢀꢀꢀꢀꢀꢀdev_display (Image1)  
图像灰度化ꢀꢀꢀꢀꢀꢀrgb1_to_gray (Image1, GrayImage)  
图像取反ꢀꢀꢀꢀꢀꢀꢀinvert_image (GrayImage, ImageInvert)  
增强对比度ꢀꢀꢀꢀꢀꢀemphasize (GrayImage, ImageEmphasize, Width, Height,  
)
a)灰度化图像  
(b)取反图像  
增加亮度ꢀꢀꢀꢀꢀꢀꢀscale_image (GrayImage, ImageScaled, 1, 100)  
分别显示ꢀꢀꢀꢀꢀꢀꢀImageInvertImageEmphasizeImageScaled  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ ꢀdev_display (ImageInvert)  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ ꢀdev_display (ImageEmphasize)  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ dev_display (ImageScaled)  
c)增强对比度  
(d)增强亮度  
直方图修正法  
在数字图像处理中,直方图是一个简单有用的工具,它反映了数字图像中每一灰度  
级与其出现像素频率间的统计关系,并且能描述图像的概貌,例如图像的灰度范围、灰  
度级的分布等,为进一歩对图像进行处理提供了重要依据。  
直方图修正法通常有直方图均衡化及直方图规定化两类:  
(1)直方图均衡;(2)直方图规定化 。  
直方图均衡化就是通过对原图像进行某种变换,  
使原图像的灰度直方图修正为均匀分布的直方图的一  
种方法。  
a)原始图像  
通过直方图均衡化,可以使原图中具有相近灰度  
值且占有大量像素点的区域的灰度范围变宽,增强图  
像整体对比效果。如右图所示:  
b)直方图均衡  
ꢀ 化后的图像  
直方图均衡化前后对比图  
对图像进行直方图均衡化实例  
程序执行结果如图所示:  
程序如下:  
*
*
*
关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
获取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'C:/Pictures.jpg')  
获取图像大小ꢀꢀꢀꢀꢀꢀꢀꢀꢀget_image_size (Image, Width, ꢀꢀ  
a)灰度化图像  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀHeight)  
打开与图像大小适应的窗口ꢀꢀꢀdev_open_window (0, 0, Width,  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀHeight, 'black', WindowHandle1)  
*
*
图像灰度化ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀrgb1_to_gray (Image, GrayImage)  
直方图均衡化ꢀꢀꢀꢀꢀꢀꢀꢀꢀequ_histo_image (GrayImage,  
*
ImageEquHisto)  
显示均衡化后结果图像ꢀꢀꢀꢀꢀdev_display (ImageEquHisto)  
b)直方图均衡  
ꢀ化后图像  
*
直方图均衡化处理方法是行之有效的增强方法之一,它把原始直方图的累积分布函数  
作为变换函数,从而产生近似均匀的直方图。  
但在某些情况下,并不一定需要具有均匀直方图的图像,而是希望有针对性地增强某  
个灰度范围内的图像,直方图规定化方法就是针对上述思想提出来的。  
直方图规定化是使原图像灰度直方图变成规定形状的直方图而对图像作修正的增强方  
法,以满足特定的效果。直方图均衡化处理只是直方图规定化的一个特例。  
局部统计法  
对比度增强除了灰度变换与直方图修正法外,还可以用Wallis和Jong-Sen Lee提出  
的局部均值和方差进行对比度增强。  
x,y)  
若图像中像素ꢀꢀ 的灰度值用ꢀꢀꢀ 表示,所谓局部均值和方差是指以ꢀꢀ  
f (x,y)  
x,y)  
2
L
像素为中心ꢀꢀꢀ  
邻域的灰度的均值 m  (x ,y)  (x,y ) (n N , m  N )  
2n 1)(2m 1)  
L
如下面式子所示:  
nx m y  
1
m (x,y)  
f (i,j)  
L
   
2n 1) (2 m 1)  
ixn jym  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
nx m y  
1
2
(x,y)  
[f (x,y) m (x,y)]  
L
   
L
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
2n 1) (2 m 1)  
ixn j ym  
图像的平滑处理  
为了抑制噪声,使图像亮度趋于平缓的处理方法就是图像平滑。  
图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制  
图像噪声和干扰高频成分的图像处理方法,目的是使图像亮度平缓渐  
变,减小突变梯度,改善图像质量。图像平滑实际上是低通滤波,但  
是在平滑过程中会导致图像边缘模糊化。  
图像噪声  
图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。噪声的存在严重影响  
了遥感图像的质量,因此在图像增强处理和分类处理之前,必须予以纠正。  
图像系统中的噪声来自多方面,经常影响图像质量的噪声源主要有以下几类:  
(1)由光和电的基本性质所引起的噪声。  
(2)电器的机械运动产生的噪声。如各种接头因抖动引起的电流变化所产生的噪声, 磁头、  
磁带抖动引起的抖动噪声等。  
(3)元器件材料本身引起的噪声。如磁带、磁盘表面缺陷所产生的噪声。  
(4)系统内部设备电路所引起的噪声。如电源系统引入的交流噪声和偏转系统引起的噪声  
等。  
邻域平均法  
邻域平均法(也称为均值滤波器)是简单的空域处理方法,与点运算的运算结果只跟  
该点相关不同,邻域运算运算的结果不仅和本像素点灰度值有关,而且和其他周围的像素  
点的灰度值也有关联。其核心思想是用几个像素灰度的平均值来代替每个像素的灰度。  
f (x,y)  
假设一幅图像ꢀꢀꢀ 为 N  N 阵列,对于邻域平均后的图像 g (x , y ),它的每个像素的灰  
度值由包含 ( x, y)邻域的几个像素的灰度级的平均值所决定,因此有:  
1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
g(x,y)  
f (i,j)  
M (  
i,j)S  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
式中:S是以ꢀx , y 0 ,1 ,2,,N 1 点邻域中心的坐标的集合,但其中不包括 (x,y),  
M是S内坐标点的总数。常用的邻域为4-邻域点和8-邻域点。如图所示:  
a)4-邻域  
(b)8-邻域  
在Halcon中均值滤波可以用mean_image算子。  
mean_image(Image : ImageMean : MaskWidth, MaskHeight : )  
ꢀꢀꢀꢀꢀꢀꢀꢀ  
图像邻域平均法算法简单,计算速度快但它的主要缺点是在降低噪声的同时使图像产生模糊,  
特别在边缘和细节处。图像所用的邻域半径越大,则图像的模糊程度越大。  
图像的平滑处理  
均值滤波实例  
程序如下:  
程序执行结果如图所示:  
*
*
*
读取图像ꢀꢀꢀꢀꢀꢀread_image (Image, 'D:/panda.jpg')  
a)带有高斯  
关闭窗口ꢀꢀꢀꢀꢀꢀꢀdev_close_window ( )  
噪声图片  
重新打开窗口ꢀꢀꢀꢀdev_open_window (0, 0, 512, 512, 'black',  
WindowHandle)  
显示图像,将图像灰度化dev_display (Image)  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ ꢀrgb1_to_gray (Image, GrayImage)  
添加高斯噪声ꢀꢀꢀꢀgauss_distribution (20, Distribution)  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ add_noise_distribution (GrayImage,  
ImageNoise, Distribution)  
*
*
b)均值滤波  
后图片  
*
均值滤波处理ꢀꢀꢀꢀmean_image (ImageNoise, ImageMean, 5, 5)  
显示图像ꢀꢀꢀꢀꢀꢀdev_display (ImageMean)  
*
中值滤波法  
中值滤波是对一个滑动窗口内的像素的灰度值进  
行排序,用其中值代替窗口中心像素的灰度值的滤波  
方法。它是一种非线性信号平滑处理技术,能有效消  
除孤立点和线段的干扰,可以减弱或消除傅立叶空间  
的高频分量,但也影响低频分量。  
高频分量往往是图像中区域边缘灰度值急剧变化  
的部分,该滤波可将这些分量消除,从而达到使图像  
平滑的效果。  
x ,i Z  
设一维的数字序列ꢀꢀꢀꢀ 取窗口长度为n(奇数),若要对此  
i
x
一维序列进行中值滤波,就是每次  
i
从序列中取出n个数ꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
a)线形  
x ,,x ,x ,x ,,x  , 其中为窗口的中心点值,再窗口内的n个  
ik i1 i i1 ik  
点的值按其数值大小排序,取这组数据的中值作为滤波后的输出值。  
一维中值滤波的数学表达式为  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
Yi  M  
ed ik i1 i i1 ik  
   
x ,, x , x , x ,, x  
(b)十字形  
一维中值滤波的概念很容易推广到二维。一般来说,二维中值滤  
波器比一维滤波器更能抑制噪声。二维模板通常为3×3、5×5的区域,  
也可以是不同的形状,如线形、圆形、十字形、方形等,如右图所示。  
c)方形  
用的二维中值滤波模板  
均值滤波实例  
程序执行结果如图所示:  
程序如下:  
*
读取图像ꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'D:/panda.jpg')  
关闭窗口,重新打开窗口ꢀdev_close_window ( )  
*
a)带有椒盐  
噪声图片  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ dev_open_window (0, 0, 512, 512, 'black',  
WindowHandle)  
*
*
*
显示图片ꢀꢀꢀꢀꢀꢀꢀꢀdev_display (Image)  
图像灰度化ꢀꢀꢀꢀꢀꢀꢀrgb1_to_gray (Image, GrayImage)  
添加椒盐噪声ꢀꢀꢀꢀꢀꢀsp_distribution (3, 3, Distribution)  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ ꢀadd_noise_distribution (GrayImage,  
ImageNoise, Distribution)  
中值滤波ꢀꢀꢀꢀꢀꢀꢀꢀmedian_image (ImageNoise,  
ImageMedian,‘circle’,3,‘mirrored’)  
显示图像ꢀꢀꢀꢀꢀꢀꢀꢀdev_display (ImageMedian)  
b)中值滤波  
后图片  
*
*
低通滤波法  
低通滤波法是一种频域处理。在分析图像信号的频率特性时,一幅图像中灰度均匀  
的平滑区域对应着傅立叶变换中的低频成分,灰度变化频繁的边缘及细节对应着傅立叶  
变换中的高频成分。用滤波的方法适当地将图像变换域中的高频成分过滤掉,便可以得  
到图像的平滑结果。其工作原理可表示为:  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
G(u,v)H(u,v)F(u,v)  
通滤波平滑处理流程如图所示。  
低通滤波平滑处理流程图  
图像的平滑处理  
对图像进行低通滤波处理实例  
程序如下:  
程序执行结果如图所示:  
*
*
*
*
*
*
*
读取带有椒盐噪声图像ꢀꢀꢀread_image (ImageNoise, 'D:/panda.jpg')  
获得图像尺寸ꢀꢀꢀꢀꢀꢀꢀget_image_size (ImageNoise, Width, Height)  
关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
(a)噪声图像  
打开适应图像大小的窗口ꢀꢀdev_open_window (0, 0, 512, 512, 'black', WindowHandle)  
显示图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_display (ImageNoise)  
图像转灰度化ꢀꢀꢀꢀꢀꢀꢀrgb1_to_gray (Image, GrayImage)  
获得一个低通滤波模型ꢀꢀꢀgen_lowpass (ImageLowpass, 0.1, 'none', 'dc_center', Width,  
Height)  
对噪声图像进行傅里叶变换,得到频率图像ꢀꢀfft_generic (ImageNoise, ImageFFT,  
to_freq', -1, 'sqrt', 'dc_center', 'complex')  
*
'
*
*
对频率图像进行低通滤波ꢀꢀconvol_fft (ImageFFT, ImageLowpass, ImageConvol)  
对频率图像进行傅里叶变换ꢀfft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt',  
b)低通滤波  
后图像  
'
dc_center', 'complex')  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ dump_window (WindowHandle, 'postscript', 'halcon_dump')  
多图像平均法  
如果一幅图像包含有加性噪声,这些噪声对于坐标点是不相关且平均值为零,在这  
种情况下就可以采用多图像平均法来进行去噪处理。  
多图像平均法的基本思想是在对获取的同一物景的若干幅图像相加取平均值来消除  
噪声。设在相同条件下,获取的同一目标物的M幅图像可表示为:  
f (x,y) f (x,y),f (x,y) , ,f (x,y),  
   
1 2 M  
则多幅图像平均后的输出图像可表示为  
M
1
g(x,y)  
f (x,y)  
i
ꢀꢀ ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
M
i1  
图像的锐化处理  
由于成像系统聚焦不好或者信道的带宽过窄,因此在图像形成和  
传输过程中,会使图像目标物廓变模糊、细节不清晰。同时,图像的  
平滑往往也使图像中的边界、轮廓变得模糊。为了减少这类不利效果  
的影响,这就需要利用图像锐化技术来实现图像增强,使图像的边缘  
变的清晰。  
Sobel 算子  
Sobel算子结合了高斯平滑和微分求导,使用卷积核对图像中的每个像素点做卷积  
和运算,然后采用合适的阈值提取边缘。  
Sobel算子有两个卷积核,分别对应x和y两个方向。采用Sobel算子可以避免梯度微  
分锐化时图像中噪声、条纹等干扰信息的增强。  
它的基本模板如图所示。  
a)对水平边缘响应最大  
b)对垂直边缘响应最大  
运用Sobel算子实例  
程序如下:  
*
读取图像ꢀꢀꢀꢀꢀꢀꢀ  
read_image (Image, 'fabrik')  
边缘检测ꢀꢀꢀꢀꢀꢀꢀ  
sobel_amp (Image, EdgeAmplitude, 'sum_abs', 3)  
阈值分割ꢀꢀꢀꢀꢀꢀꢀ  
threshold (EdgeAmplitude, Region, 10, 255)  
提取边缘框架ꢀꢀꢀꢀꢀ  
skeleton (Region, Skeleton)  
显示图片ꢀꢀꢀꢀꢀꢀꢀ  
dev_display (Image)  
设置输出颜色为红色ꢀꢀ  
dev_set_color ('red')  
显示边缘框架ꢀꢀꢀꢀꢀ  
dev_display (Skeleton)  
*
程序执行结果如图所示:  
*
*
*
a)原图  
(b)边缘检测结果图  
(c)边缘框架图  
*
*
拉普拉斯增强算子  
在图像的边缘区域,像素值会发生比较大的变化,对这些像素求导会出现极值,在  
这些极值位置,其二阶导数为0,所以也可以用二阶导数来检测图像边缘。  
拉普拉斯算子就是其中一个线性二阶微分算子,表达式为:  
2 2  
x,yx,y)  
2 2  
2
f (x,y)  
x  
y  
采用拉普拉斯算子实例  
对图像程序如下:  
序执行结果如图所示:  
*关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
*获取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'mreut')  
*获取图像尺寸ꢀꢀꢀꢀꢀꢀꢀget_image_size (Image, Width,  
a)原始图像  
Height)  
打开适应图片大小的窗口ꢀꢀdev_open_window (0, 0, Width,  
Height, 'black', WindowHandle)  
*
*
显示图片ꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_display (Image)  
对图像进行拉普拉斯算子处理laplace (Image,  
*
ImageLaplace_3, 'signed', 3, 'n_8_isotropic')  
显示处理后的图像ꢀꢀꢀꢀꢀdev_display (ImageLaplace_3)  
(b)拉普拉斯  
ꢀ锐化后图像  
*
髙通滤波法  
图像中的边缘及急剧变化部分与图像频谱的高频分量相对应,因此利用高通滤波器  
衰减图像信号中的低频分量时就会相对强调其高频分量,从而使图像的边缘及急剧变化  
部分变得清楚,实现图像的锐化。  
高通滤波就是在空间域用高通滤波算子和图像卷积来增强边缘。  
常见的ꢀꢀ 高通卷积模板如下:  
3  
3
1 1 1  
 1  2 1   
   
   
 1  2 1   
   
H  1 9 1 H   2 5  2  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
1 1 1  
图像的锐化处理  
对图像进行高通滤波处理实例  
程序如下:  
程序执行结果如图所示:  
*
*
*
*
*
关闭窗口ꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
读取图像ꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'D:/picture.png')  
图像灰度化ꢀꢀꢀꢀꢀꢀrgb1_to_gray (Image, GrayImage)  
获取图像大小ꢀꢀꢀꢀꢀget_image_size (GrayImage, Width, Height)  
打开图像适应大小窗口ꢀdev_open_window (0, 0, Width, Height, 'black',  
WindowHandle)  
得到高通滤波模型ꢀꢀꢀgen_highpass (ImageHighpass, 0.1, 'n', 'dc_center',  
Width, Height)  
a)原始图像  
*
*
1
*
*
对图像进行傅里叶变换ꢀfft_generic(GrayImage,ImageFFT2,'to_freq',-  
,'none','dc_center','complex')  
对频率图像进行高通滤波convol_fft(ImageFFT2,ImageHighpass,ImageConvol2)  
对得到的频率图像进行傅里叶反变换  
fft_generic(ImageConvol2,ImageResult2,'from_freq',1,'none','dc_center','byte')  
显示图像ꢀꢀꢀꢀꢀꢀꢀdev_display (ImageResult2)  
b)高通滤波锐化后图像  
*
同态滤波增强  
同态滤波是把图像的照明反射模型作为频域处理的基础,将亮度范围压缩和对比度  
增强的频域方法。  
一幅图像ꢀꢀꢀ 可以用它的照明分量ꢀꢀ 及反射分量ꢀꢀ 来表示,即:  
f (x,y)  
i(x,y)  
r(x,y)  
f (x,y)i(x,y)r(x,y)  
f (x,y)  
同态滤波ꢀꢀꢀ对进行滤波的流程如图所示:  
小ꢀꢀ结  
ROI  
在本章节中,我们主要介绍了如何对图像进行预处理,包括感  
兴趣区域(ROI)的截取,图像的变换与校正以及增强图像的具  
体实现方法。  
1)ROI的截取,主要分为两步:①选择关注区域,②裁剪区域;  
2)图像的变换与校正。  
3)增强图像的具体实现。  
习ꢀ题  
6
6
6
6
.1 什么是图像增强?它包含哪些内容?  
.2 图像滤波的主要目的是什么?主要方法有哪些?  
.3 什么是图像平滑?试简述均值滤波和中值滤波的区别。  
.4 什么是图像锐化?图像锐化有几种方法?  
THANKS FOR LISTENIGN